/**
 * <strong>Title : WorkUnitDao.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.cm.dao<br>
 * </strong> <strong>Description : </strong>@作业单元持久层接口@<br>
 * <strong>Create on : 2015年9月25日 上午11:25:55<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 *          <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 *          <br>
 *          <br>
 */
package cn.b.sky.mes.cm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.WorkUnit;
import cn.b.sky.mes.cm.model.WorkUnitJSON;
import cn.b.sky.mes.cm.model.WorkUnitTypeAssign;
import cn.b.sky.mes.cm.model.condition.WorkUnitCondition;

/**
 * <strong>Title : WorkUnitDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.cm.dao<br></strong>
 * <strong>Description : </strong>@作业单元持久层@<br> 
 * <strong>Create on : 2015年9月25日 上午11:25:55<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface WorkUnitDao {

  /**
   * <strong>Title : getWorkUnitExactCount<br></strong>
   * <strong>Description : </strong>@获取同一工厂下作业单元条数@<br> 
   * <strong>Create on : 2015年9月25日 下午7:10:11<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int getWorkUnitExactCount(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : getWorkUnit<br></strong>
   * <strong>Description : </strong>@根据条件获取作业单元实体@<br> 
   * <strong>Create on : 2015年9月25日 下午7:16:32<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * WorkUnit
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public WorkUnit getWorkUnit(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : validateRefFromWorkUnitAssign<br></strong>
   * <strong>Description : </strong>@验证在cm_WorkUnitAssign 表中是否无关联数据@<br> 
   * <strong>Create on : 2015年9月25日 下午2:57:06<br></strong>
   * <p>
   * @param assign
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int validateRefFromWorkUnitAssign(WorkUnitTypeAssign assign);

  /**
   * <strong>Title : selectWorkUnitList<br></strong>
   * <strong>Description : </strong>@获取作业单元列表@<br> 
   * <strong>Create on : 2015年9月25日 下午3:09:41<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * List<WorkUnit>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkUnit> selectWorkUnitList(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : getWorkUnitCount<br></strong>
   * <strong>Description : </strong>@获取作业单元总数@<br> 
   * <strong>Create on : 2015年9月25日 下午3:10:04<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public int getWorkUnitCount(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : getWorkUnit<br></strong>
   * <strong>Description : </strong>@根据id获取作业单元实体@<br> 
   * <strong>Create on : 2015年9月25日 下午3:10:12<br></strong>
   * <p>
   * @param id
   * @return
   * WorkUnit
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public WorkUnit getWorkUnit(@Param("id") String id, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertWorkUnit<br></strong>
   * <strong>Description : </strong>@插入作业单元@<br> 
   * <strong>Create on : 2015年9月25日 下午3:10:19<br></strong>
   * <p>
   * @param workUnit
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertWorkUnit(WorkUnit workUnit);

  /**
   * <strong>Title : updateWorkUnit<br></strong>
   * <strong>Description : </strong>@编辑、更新作业单元@<br> 
   * <strong>Create on : 2015年9月25日 下午3:10:26<br></strong>
   * <p>
   * @param workUnit
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateWorkUnit(WorkUnit workUnit);

  /**
   * <strong>Title : deleteWorkUnits<br></strong>
   * <strong>Description : </strong>@批量删除作业单元@<br> 
   * <strong>Create on : 2015年9月25日 下午3:10:33<br></strong>
   * <p>
   * @param workUnits
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteWorkUnits(@Param("workUnitCode") String workUnitCode, @Param("siteCode") String siteCode);

  /**
   * <strong>Title : insertWorkUnitTypeAssign<br></strong>
   * <strong>Description : </strong>插入作业单元分配表@<br> 
   * <strong>Create on : 2015年9月29日 下午1:46:39<br></strong>
   * <p>
   * @param assign
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertWorkUnitTypeAssign(WorkUnitTypeAssign assign);

  /**
   * <strong>Title : selectWorkUnitListForPaging<br></strong>
   * <strong>Description : </strong>@方法注释说明写在此处@<br> 
   * <strong>Create on : 2015年10月13日 下午3:13:26<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * List<WorkUnit>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkUnit> selectWorkUnitListForPaging(WorkUnitCondition workUnitCondition);

  /**
   * 
   * <strong>Title : selectWorkUnitSuggest<br></strong>
   * <strong>Description : </strong>建议查找作业单元<br> 
   * <strong>Create on : 2015-12-21 上午11:23:53<br></strong>
   * <p>
   * @param condition
   * @return
   * List<WorkUnit>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkUnit> selectWorkUnitSuggest(WorkUnitCondition condition);

  /**
   * 
   * <strong>Title : selectWorkUnitByCenterAndType<br></strong>
   * <strong>Description : </strong>根据工作中心及作业单元类型查找作业单元<br> 
   * <strong>Create on : 2016年8月11日 上午9:42:54<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @param workUnitType
   * @return
   * List<WorkUnitJSON>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkUnitJSON> selectWorkUnitByCenterAndType(@Param("siteCode") String siteCode,
      @Param("workCenterCode") String workCenterCode, @Param("workUnitType") String workUnitType);

  /**
   * 
   * <strong>Title : getAllWorkUnitListBySiteCode<br></strong>
   * <strong>Description : </strong>根据工厂、状态获取全部作业单元<br> 
   * <strong>Create on : 2016-8-25 上午10:20:16<br></strong>
   * <p>
   * @param siteCode
   * @param lockFlag
   * @return
   * List<WorkUnit>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkUnit> getAllWorkUnitListBySiteCode(@Param("siteCode") String siteCode,
      @Param("lockFlag") Integer lockFlag);

}
